home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 2 / CU Amiga Magazine's Super CD-ROM 02 (1996)(EMAP Images)(GB)[!][issue 1996-04].iso / magazine / amiga_e / divers / dirw.e < prev    next >
Text File  |  1994-05-02  |  4KB  |  120 lines

  1. /********************************/
  2. /* DirWhat v0.0 (c) 1993 NasGûl */
  3. /********************************/
  4.  
  5. OPT OSVERSION=37
  6.  
  7. ENUM ER_NONE,ER_BADARGS,ER_MEM,ER_UTIL,ER_WHAT
  8. ENUM ARG_DIR,ARG_NC,ARG_COMP,ARG_TYPE,NUMARGS
  9.  
  10. MODULE 'dos/dosasl','dos/dos','utility','utility/tagitem'
  11. MODULE 'whatis','exec/libraries'
  12.  
  13. RAISE ER_MEM IF New()=NIL,
  14.       ER_MEM IF String()=NIL,
  15.       ERROR_BREAK IF CtrlC()=TRUE
  16.  
  17.  
  18. DEF dir,rdargs=NIL,c,tritype=FALSE
  19. CONST WBF_UPDATEFILETYPE=$01
  20. PROC main() HANDLE /*"main()"*/
  21.   DEF args[NUMARGS]:LIST,templ,x,lock,fib:fileinfoblock,dirw[100]:STRING
  22.   DEF id_str[9]:STRING,type,id_comp[9]:STRING,fichier[100]:STRING,t_ret
  23.   DEF ver[50]:STRING,nbrs_col=1
  24.   DEF comptype[256]:STRING
  25.   StrCopy(ver,'$VER:DirWhat v0.0b (c) NasGûl (23-10-93)',50)
  26.   IF (utilitybase:=OpenLibrary('utility.library',37))=NIL THEN Raise(ER_UTIL)
  27.   IF (whatisbase:=OpenLibrary('whatis.library',3))=NIL THEN Raise(ER_WHAT)
  28.   FOR x:=0 TO NUMARGS-1 DO args[x]:=0
  29.   templ:='DIR,NC/N,COMP/S,TYPE/S'
  30.   rdargs:=ReadArgs(templ,args,NIL)
  31.   IF rdargs=NIL THEN Raise(ER_BADARGS)
  32.   dir:=args[ARG_DIR]
  33.   IF StrCmp(dir,'¿',1) THEN all_types()
  34.   IF dir THEN StrCopy(dirw,dir,ALL)
  35.   IF args[ARG_COMP] THEN id_comp:=Long(args[ARG_COMP])
  36.   IF args[ARG_NC] THEN nbrs_col:=Long(args[ARG_NC]) ELSE nbrs_col:=1
  37.   IF arg[ARG_TYPE]
  38.       tritype:=TRUE
  39.       StrCopy(comptype,arg[ARG_TYPE],ALL)
  40.   ENDIF
  41.   IF lock:=Lock(dirw,-2)
  42.     IF Examine(lock,fib) AND (fib.direntrytype>0)
  43.     AddPart(dirw,'',100)
  44.     StrCopy(fichier,dirw,ALL)
  45.     IF fib.direntrytype>0
  46.       WriteF('\e[1mDirectory of:\s\e[0m\n',fib.filename)
  47.       WHILE ExNext(lock,fib)
  48.         StrAdd(fichier,fib.filename,ALL)
  49.         type:=WhatIs(fichier,[TAG_USER+203,1]:tagitem)
  50.         id_str:=GetIDString(type)
  51.         IF tritype=TRUE
  52.             IF StrCmp(id_str,comptype,StrLen(comptype))
  53.                 WriteF(IF fib.direntrytype>0 THEN '\e[1;32m\l\s[20]<dir>\e[0;31m          ' ELSE '\l\s[17] \r\d[7] \s[9]',fib.filename,fib.size,id_str)
  54.                 WriteF(IF c++=nbrs_col THEN (c:=0)+'\n' ELSE ' ')
  55.             ENDIF
  56.         ELSE
  57.             WriteF(IF fib.direntrytype>0 THEN '\e[1;32m\l\s[20]<dir>\e[0;31m          ' ELSE '\l\s[17] \r\d[7] \s[9]',fib.filename,fib.size,id_str)
  58.             WriteF(IF c++=nbrs_col THEN (c:=0)+'\n' ELSE ' ')
  59.         ENDIF
  60.         CtrlC()
  61.         StrCopy(fichier,dirw,ALL)
  62.       ENDWHILE
  63.       IF c THEN WriteF('\n')
  64.     ELSE
  65.       type:=WhatIs(dir,[TAG_USER+203,1]:tagitem)
  66.       id_str:=GetIDString(type)
  67.       t_ret:=StrCmp(id_str,id_comp,9)
  68.       WriteF('\d\n',t_ret)
  69.     ENDIF
  70.     ELSE
  71.       /*Raise(ER_BADARGS)*/
  72.     ENDIF
  73.     UnLock(lock)
  74.   ELSE
  75.     /*Raise(ER_BADARGS)*/
  76.   ENDIF
  77.   Raise(ER_NONE)
  78. EXCEPT
  79.   IF rdargs THEN FreeArgs(rdargs)
  80.   IF utilitybase THEN CloseLibrary(utilitybase)
  81.   IF whatisbase  THEN CloseLibrary(whatisbase)
  82.   SELECT exception
  83.     CASE ER_BADARGS;        WriteF('Bad Arguments for D!\n')
  84.     CASE ER_MEM;        WriteF('No mem!\n')
  85.     CASE ER_UTIL;       WriteF('Could not open "utility.library" v37\n')
  86.     CASE ERROR_BREAK;       WriteF('\n*** BreakC ***\n')
  87.     CASE ERROR_BUFFER_OVERFLOW; WriteF('Internal error\n')
  88.     CASE ER_WHAT;       WriteF('Could not open "Whatis.library" v3\n')
  89.     DEFAULT;            PrintFault(exception,'Dos Error')
  90.   ENDSELECT
  91. ENDPROC
  92. PROC all_types() /*"all_types()"*/
  93.     DEF next,nbrs,c,str[9]:STRING
  94.     DEF lib:PTR TO lib
  95.     nbrs:=0
  96.     c:=0
  97.     IF whatisbase
  98.     lib:=whatisbase
  99.     CloseLibrary(whatisbase)
  100.     IF lib.opencnt>0
  101.         WriteF('Flush Impossible.\n\d utilise(nt) la WhatIs.library\n',lib.opencnt)
  102.     ENDIF
  103.     whatisbase:=OpenLibrary('whatis.library',3)
  104.     ENDIF
  105.     AskReparse(WBF_UPDATEFILETYPE)
  106.     WriteF('\e[1;32mFichiers reconnus par votre système:\e[;0m\n')
  107.     next:=FirstType()
  108.     WHILE next
  109.     str:=GetIDString(next)
  110.     WriteF('\l\s[10]',str)
  111.     next:=NextType(next)
  112.     nbrs:=nbrs+1
  113.     c:=c+1
  114.     WriteF(IF c=7 THEN (c:=0)+'\n' ELSE '')
  115.     ENDWHILE
  116.     WriteF('\n')
  117.     WriteF('Nombres De Fichiers reconnus :\d\n',nbrs-2)
  118.     Raise(ER_NONE)
  119. ENDPROC
  120.